const { constants } = require("buffer");
const fs = require("fs");
const path = require("path");

const ws = fs.createWriteStream(path.resolve(__dirname, "copy.txt"), {
  flags: "w", // 默认不写就是 r 表示我要读取
  autoClose: true,
  emitClose: true,
  start: 0,
  highWaterMark: 1, // 写入 不代表一次写几个，而是表示我的预期
});

// 10个数 要写入，每次写入2个
// 主要是给读取用的 ， 假如每次读取两个，但是我的预期是三个

// 2 2

// let flag = ws.write("1", function () {
//   console.log("写入ok1");
// });
// console.log(flag);
// flag = ws.write("2", function () {
//   console.log("写入ok2");
// });
// console.log(flag);
// flag = ws.write("3", function () {
//   console.log("写入ok3");
// });
// console.log(flag);

// ws.on("drain", function () {
//   console.log("drain"); // 只有当我们写入的内容 达到预期并且都被成功写入后才会执行
// });

// === ws.write() + ws.close()
// ws.end("遗言"); // 触发close事件

// ws.on("open", function (fd) {
//   console.log(fd);
// });
// ws.on("close", function () {
//   console.log("close");
// });

// 可写流的方法 write()  end()  可以有一个on('drain') 事件搭配使用

// 我有10个数字 我希望将数组 一个一个字节写入，只用一个字节的内存写入

let i = 0;
function write() {
  let flag = true;
  while (flag && i < 10) {
    flag = ws.write(i++ + "");
    console.log(flag);
  }
}
write();

ws.on("drain", function () {
  write();
});
